package com.jzo2o.rabbitmq.properties;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;
import org.springframework.context.annotation.Configuration;

import java.util.ArrayList;
import java.util.List;

/**
 * RabbitMQ 消息恢复器相关配置
 * 绑定配置文件中前缀为 "rabbit-mq.recoverer" 的配置项
 */
@Data
@ConfigurationProperties(prefix = "rabbit-mq.recoverer") // 指定配置前缀进行绑定
@Configuration
public class RabbitmqProperties {

    /**
     * 消息消费异常处理相关配置
     */
    @NestedConfigurationProperty // 标识嵌套的配置属性类
    private Error error = new Error();

    /**
     * 消息消费异常处理配置内部类
     */
    @Data
    public static class Error {
        /**
         * mq消费异常接收routingKey
         */
        private String routingKey = "error.rounting-key";
        /**
         * mq消费异常接收交换机
         */
        private String exchange = "error.exchange";

        /**
         * mq消费异常接收队列
         */
        private String queue = "error.queue";
        /**
         * 消费异常白名单，进入白名单的routingKey才会进入异常队列重新处理
         */
        @NestedConfigurationProperty // 标识嵌套的配置属性类
        private List<String> whiteList = new ArrayList<>();
    }



}
